//Html Parsing with jsoup

package parser;

import java.io.File;
import java.io.IOException;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

public class htmlParser {

	public static void main(String[] args) throws IOException {
		// input html file
		File input = new File(System.getProperty("user.dir")
				+ "/sample-docs/haf_uebung2.html");

		String html = null;
		Document document = Jsoup.parse(input, "UTF-8");
		
		// body from html file
		// man kann auch direkt mit Document arbeiten
		Element body = document.body();
		
		
		// alle fett gedruckten Paragraphen
		// W�hle alle <p>*style="*bold*"*</p> Tags aus
		Elements pSpanBoldElements = body.select("p:has(span[style~=bold]):matches((.)*(bung)(.)*)");
		for(Element element:pSpanBoldElements){
			//System.out.println(element); //html format
			System.out.println("position: " + body.getAllElements().indexOf(element) + " -> fett-> " + element.text()); //plain text

		}
		System.out.println("-----------------------------------------------------------");
		
		//alle Paragraphen mit einem Tag mit Farbe
		Elements colorElements = body.select("p:has(span[style~=color])");
		for(Element element:colorElements){
			//System.out.println(element); //html format
			System.out.println("farbig-> " + element.text()); //plain text

		}
		System.out.println("-----------------------------------------------------------");

		

		
		
		
		//int i = 0;
		// Liefert alle Elemente aus dem <head> Tag
		/*
		 * for(Element element : document.getAllElements()){
		 * System.out.println(i++ + element.data()); }
		 */
		// System.out.println(document.getAllElements().toString());

		// Liefert den Text aus allen <p> Tags
		for (Element element : document.getAllElements()) {
			if (element.tag().toString() == "p") {
				System.out.println(document.getAllElements().indexOf(element) +": "+ element.text());
			}

		}
		System.out.println("-----------------------------------------------------------");
		// Liefert die ganze �bung 4 
		for(int i=99;i<=116;i++){
			if (document.getAllElements().get(i).tag().toString() == "p") {
				System.out.println(i +": "+ document.getAllElements().get(i).text());
			}
		}
		
		// W�hle alle <p> Tags mit dem Text "bung" aus
		System.out.println("-----------------------------------------------------------");
				Elements pElements = document.select("span:matches((.)*(bung)(.)*)");
				//Elements pElements = document.select("p:contains(bung)");
				System.out.println("Anzahl der <p> Elemente mit \"bung\": " + pElements.size());
				System.out.println(pElements.get(0).text());
				


	}

}
